上一集讓人等到很崩潰的,終於..鄭列終於吹噓完了
阿物件:我跟你說...
我:... (接下來難道要換阿物件吹噓了嗎?...要是時間能重來就好了)
????:讓我來幫你吧?告訴我,你想去的時間吧
我:(...?雖然不知道是誰)我想回到8月16號,這樣就有一個月可以準備鐵人了 !
我想回到中秋節9月21日前追蹤JS姐妹們的那天!!
????:交給我吧,建構新的時間
getFullYear() 延伸問題:Y2K背後的問題是?(更新時間:9/24 ,15:35)
let goBackTime = new Date();
D特:就叫我D特吧,我的替身能力是Date
。
我:...時間管理大師是你?
D特:並沒有,我的這個Date
的能力還是有限制的,讓我稍微跟你講講吧:
Date
的時間是基於世界標準時間(UTC),最早只能回溯到1970 年 1 月 1 日(但跟UNIX epoch計算方不同,UNIX的計算單位只到秒(s),而Date
則是到毫秒(millisecond))let rightNow =Date();
let newRightNow = new Date();
console.log(rightNow,newRightNow);
這樣差在哪?新跟舊的差別?
new
,輸出的時間為String
型別的時間內容new
,輸出的則為object
D特:試圖回溯時間是不容易的事情,你需要知道並取得以下時間碎片,我會幫你依序取得它們,那些碎片分別是:
將這些時間碎片拼湊後,才有可能正確地回到你的時間點
我:2021年9月21號星期二的早上10點38分54秒。
const wantToGoDay = new Date('sep 21, 21 10:38:54');
D特:那這樣就開始來取得那些碎片吧,拿出容器
let fragmentsOfTime = {};
回傳值:四位數數字型別的整數(根據local time)
let getYear = wantToGoDay.getFullYear();
//裝入裡面吧
let fragmentsOfTime = {};
fragmentsOfTime.year = getFullYear;
console.log(fragmentsOfTime)
getFullYear()延伸問題:Y2K (更新時間:24/15:35)
(感謝我的隊友們熱情分享)
所謂Y2K問題:
一開始是軟體開發者沒有意識到會有這個問題,加上硬體成本過高,所以沿襲傳統就以2位數表達年份,但時間推進到2000年,程式的年份表達會遇到顯示00,但無法辨識背後代表的是1900年 or 2000年?
因此,隨著硬體的成本降低,漸漸轉用4數表達年份:顯示的內容從原本的00變成2000。但硬體的存放空間終究有限,究竟這樣4數的存放極限在哪?又為何是所謂的2038問題?
Math.pow(2,31);//得到32位元的值存放極限: 2147483648(s)(世界時間存放系統)
//這樣我們還能存幾年?
let totalTimeStorage = Math.pow(2,31)/86400(每日秒數)/365;
//就能得到還能存放的時間長度:68
//在文章中有介紹getFullYear(),最早會從1970開始
//因此就比較能理解為何是2038災難
另一個取得年份的方式是Date.prototype.getYear()
但是MDN並不推薦使用這個methods,理由如下:
let Xmas = new Date('dec 24, 1995 23:15:00');
console.log(Xmas.getYear());
當我們使用getYear()
時,它會將你的預設年份值 - 1900,以上面的案例,我們會得到1995-1900 = 95;
試想:當你輸入的年份早於1900年會怎樣呢?
2. 部分的瀏覽器已不支援
回傳值:0-11間數字型別的整數(根據local time)
let getMonth = wantToGoDay.getMonth();
fragmentsOfTime.date = getDate;
console.log(fragmentsOfTime)
回傳值:1-31間數字型別的整數(根據local time)
let getDate = wantToGoDay.getDate()
consolle.log(getDate);
fragmentsOfTime.date = getDate;
console.log(fragmentsOfTime)
回傳值:0-23間數字型別的整數(根據local time)
let getHours = wantToGoDay.getHours()
consolle.log(getHours);
fragmentsOfTime.hours = getHours;
console.log(fragmentsOfTime)
回傳值:0-59間數字型別的整數(根據local time)
let getMinutes = wantToGoDay.getMinutes()
consolle.log(getMinutes);
fragmentsOfTime.mintues = getMinutes;
console.log(fragmentsOfTime)
回傳值:0-59間數字型別的整數(根據local time)
let getSeconds = wantToGoDay.getSeconds()
consolle.log(getSeconds);
fragmentsOfTime.seconds = getSeconds;
console.log(fragmentsOfTime)
D特:碎片湊齊了!!
(裝碎片容器發出巨光)
.....
...
我:修蛋幾勒,怎麼沒有出去的感覺..?
-- to be continued --
那今天就到這邊摟!今天分享喜歡的歌是:
Sidney Bechet - Si tu vois ma mère
https://www.youtube.com/watch?v=HkdCr9HlRE0&list=PLevoGoxUkU1_HrNQhLKotpRUsPMc8CwHf&index=3
每天的休息,是為了後面的追求,明天見。